#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <bitset>
#include <vector>
using namespace std;

const int nn=3000;
string comment="";

int gsize;           // size of the graph      // 
int m;               // length of the snake    //
bool inc[nn][nn];    // inciedence matrix      //
bool inc_tmp[nn][nn];    // inciedence matrix      //
int a[nn],c[nn];     // snake                  //
int a_tmp[nn],c_tmp[nn];     // snake                  //
int b[nn];           // degrees                //
int d[nn],f[nn];     // digits,multiplicities  //
int num;             // number for conversion  //
int trials;          // number of the trials   //
int act;             // actual num of colors   //
int opt;             // optimal coloring       //

const int mm=300; 

bool allsol;         // must be set to 0 or 1   // 
bool displ;          // display flag            // 
bool savesol;        // solution saving flag    //                     
int csize,csize1;    // clique size             //
long long esize;      // number of edges         //
int prosp[mm][nn];   // the prospective nodes   //
int size[mm];        // size of prospective     //
int bound[mm];       // bounds for prosp        //
int level;           // search tree level       //
int pivot;           // pivot element           //
long long nsol;       // number of solutions     //
long long nnodes;     // number of nodes visited //
long long step;       // step size               //
long long total;      // tree size               //
long long tree[mm];   // tree                    //
int mult[mm];        // color multiplicities    //

int up[nn];          // pointer for coloring    //
int addr[nn];        // pointer for coloring    //
 
#include "brelaz-clq.cpp"
#include "coolcp1.cpp"

// Greedy sequential coloring of the nodes using the      //
// Brelaz saturated coloring idea starting with a clique  //
 
bool k_clique(vector<vector<bool> > szomszedsagi, int k)
{ //==================//
  //number of colorings, to find the best:
  trials=50;
  //==================//
  gsize=m=szomszedsagi.size();
  csize=k; allsol=0;
  cout<<gsize<<m<<endl;

  int i, j;
  for(i=1;i<=m;++i)
    for(j=1;j<=m;++j)
      inc[i][j]=szomszedsagi[i-1][j-1];


  for(int i=1;i<=gsize;++i){
    a[i]=i;//gsize-i+1;
    c[i]=0;
  }
  srand(time(NULL));
  
  repeated();


  //CP:
  setting();
  /*
  for(int i=1;i<=gsize;++i){
    a[i]=i;
    c[i]=0;
  }
  m=gsize;
  */

  // main loop for Caraghan-Pardalos//
  while( level>0 )
  { test(); 
    // displayprosp(); //
  }       

  //displaytree();
  cout<<"csize = "<<csize<<endl;

  cout << endl;
  cout << "nnodes=" << nnodes << endl;
  cout << "nsol=" << nsol << endl;

  if(nsol==0) return false;
  else return true;
}
